Field of the Invention
The present invention relates to the field of distributed computing and in particular, to apparatus, systems, and methods to facilitate deployment of container based services on distributed computing systems including clouds.
Description of Related Art
The performance of computing applications may often be increased by distributing the computational workload across a networked cluster of computers. A physical networked cluster of computers with attendant software facilitating virtualization is often referred to as a “cloud” or “cloud infrastructure” or simply an infrastructure. Cloud computing facilitates on-demand access to resources, which may be rapidly scaled up or down in proportion to user requirements. A VM may be viewed as some fraction of the hardware (e.g. CPU, storage, etc.) and software (e.g. Operating System (OS) etc.) provided by a cloud. Thus, each VM (which typically includes some fraction of the underlying cloud hardware and an Operating System) can be used to deploy and run on or more cloud based applications.
Applications can sometimes be deployed on a host infrastructure in the form of “containers” or “application containers.” One distinction between an application container and a VM is that multiple application containers (e.g. each corresponding to a different application) may be deployed over a single OS, whereas, each VM typically runs a separate OS. Thus, containers are often less resource intensive and may facilitate better utilization of underlying host hardware resources. However, application containers that run on a single host are susceptible to host failure, which may result in failure of the entire software system that the application containers constitute. In addition, application containers that run on a single host may also be limited by host resource constraints. Thus, many systems run on a collection of container hosts termed “container clusters.”
To simplify container/container cluster deployment, containers or container clusters are often delivered as a service. Container as a Service (CaaS) refers to container-based infrastructure services involving the delivery of container cluster management, container orchestration, and the underlying computational resources to end-users as a service (e.g. from a cloud infrastructure provider). CaaS solutions are typically utilized by application developers to deploy new container-based applications.
However, because CaaS offerings by cloud providers may differ in in terms of cluster management, container deployment, scaling, reporting, lifecycle management etc., system developers are often faced with the task of rewriting or manually configuring code to deploy the system on different providers resulting in inefficiencies, duplicated effort, the potential for errors, and increased maintenance costs. Moreover, cloud software is typically a hybrid of VM-based applications and container based applications. Deploying, migrating, and maintaining hybrid cloud software that is a mix of VM-based applications and container-based applications between various cloud providers presents additional challenges.
Therefore, there is a need for apparatus, systems, and methods to facilitate efficient deployment of distributed applications including container and cloud-based applications across a plurality of container cluster and cloud providers.